#ifdef GTRACK_3D
#ifndef GTRACK_3D_H__
#define GTRACK_3D_H__

/**
    * @brief
    *  GTRACK 观测向量
    */
typedef struct
{
    /**  @brief   距离, m */
    float range;
    /**  @brief   方位角, rad */
    float azimuth;
    /**  @brief   Elevation, rad */
    float elev;
    /**  @brief   径向速度, m/s */
    float doppler;
} GTRACK_measurement_vector;

/**
    * @brief
    *  GTRACK 位置
    */
typedef struct
{
    /**  @brief   目标侧向位置, m */
    float posX;
    /**  @brief   目标水平位置, m */
    float posY;
    /**  @brief   目标垂直位置, m */
    float posZ;
} GTRACK_cartesian_position;

/**
    * @brief
    *  GTRACK 状态向量, 3DV 配置
    */
typedef struct
{
    /**  @brief   目标侧向位置, m */
    float posX;
    /**  @brief   目标水平位置, m */
    float posY;
    /**  @brief   目标垂直位置, m */
    float posZ;
    /**  @brief   目标侧向速度, m/s */
    float velX;
    /**  @brief   目标水平速度, m/s */
    float velY;
    /**  @brief   目标垂直速度, m/s */
    float velZ;
} GTRACK_state_vector_pos_vel;

/**
    * @brief
    *  GTRACK 状态向量, 3DA配置
    */
typedef struct
{
    /**  @brief   目标侧向位置, m */
    float posX;
    /**  @brief   目标水平位置, m */
    float posY;
    /**  @brief   目标垂直位置, m */
    float posZ;
    /**  @brief   目标侧向速度, m/s */
    float velX;
    /**  @brief   目标水平速度, m/s */
    float velY;
    /**  @brief   目标垂直速度, m/s */
    float velZ;
    /**  @brief   目标侧向加速度, m/s2 */
    float accX;
    /**  @brief   目标水平加速度, m/s2 */
    float accY;
    /**  @brief   目标垂直加速度, m/s2 */
    float accZ;
} GTRACK_state_vector_pos_vel_acc;

#endif /* GTRACK_3D_H__ */
#endif